/**
 * 获取数字将要插入数组的位置, 即就是获取第一个比元素大的位置
 * @param arr 数组
 * @param target 将要数组的元素
 */
const getPos = (arr: number[], target: number) => {
    let s = 0,
        e = arr.length - 1;
    while (s < e) {
        const m = (s + e) >> 1

        if (arr[m] >= target) {
            // 大于当前元素, 从m开始往前找
            e = m
        } else {
            // 中间元素小于要找的元素, 往后找
            s = m + 1;
        }

    }
    // start就是要插入数组中的位置的
    console.log(s)
}

// getPos([1, 4, 8, 8, 10], 0)


const getEle = (arr: number[], target: number) => {
    let s = 0,
        e = arr.length;
    while (s < e) {
        const m = (s + e) >> 1

        if (arr[m] > target) {
            // 大于当前元素, 从m开始往前找
            e = m
        } else if (arr[m] < target) {
            // 中间元素小于要找的元素, 往后找
            s = m + 1;
        } else {
            // 找到了该元素
            return true
        }

    }
    return false
}
console.log(getEle([1, 4, 8, 9, 10], 4))
console.log(getEle([1, 4, 8, 9, 10], 9))
console.log(getEle([1, 4, 8, 9, 10], 10))
console.log(getEle([1, 4, 8, 9, 10], 1))
console.log(getEle([1, 4, 8, 9, 10], 8))
console.log(getEle([1, 4, 8, 9, 10], 100))
console.log(getEle([1, 4, 8, 9, 10], 6))